package com.nageoffer.shortlink.project.dao.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.nageoffer.shortlink.project.common.database.BaseDo;
import lombok.*;

import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("t_link")
public class ShortLinkDo extends BaseDo {
    /**
     * ID - 主键，自增长
     */
    private Long id;

    /**
     * 域名 - 短链接所属的域名
     */
    private String domain;

    /**
     * 短链接URI - 短链接的后缀部分(不含域名)，长度限制8个字符
     */
    private String shortUri;

    /**
     * 完整短链接 - 包含域名的完整短链接，唯一约束
     */
    private String fullShortUrl;

    /**
     * 原始链接 - 用户提交的原始长链接，最大长度1024字符
     */
    @TableField("origin_url")
    private String originUrl;

    /**
     * 点击量 - 该短链接被点击的次数，默认值为0
     */
    private Integer clickNum;

    /**
     * 分组标识 - 用于区分不同分组的短链接，长度32字符
     */
    private String gid;

    /**
     * 启用状态 - 0：已启用 1：未启用
     */
    private Integer enableStatus;

    /**
     * 创建类型 - 0：接口创建 1：控制台创建
     */
    private Integer createType;

    /**
     * 有效期类型 - 0：永久有效 1：自定义
     */
    private Integer validDateType;

    /**
     * 有效期 - 当valid_date_type为1时有效
     */
    private Date validDate;

    /**
     * 描述 - 关于该短链接的说明信息，最大长度1024字符
     */
    @TableField("`describe`")
    private String describe;

    /**
     * 网站标识
     */
    private String favicon;
    /**
     * 历史PV
     */
    private Integer totalPv;
    /**
     * 今日PV
     */
    @TableField(exist = false)
    private Integer todayPv;
    /**
     * 历史UV
     */
    private Integer totalUv;
    /**
     * 今日UV
     */
    @TableField(exist = false)
    private Integer todayUv;
    /**
     * 历史UIP
     */
    private Integer totalUip;
    /**
     * 今日UIP
     */
    @TableField(exist = false)
    private Integer todayUip;
    /**
     * 删除时间
     */
    private Long delTime;
}
